Technical Q&A QA1242
Developing for VFS


Q: アップルは Mac OS X での外部ファイルシステム(VFS プラグイン)の開発をサポートしていますか?このようなファイルシステムの開発についての情報はどこから入手できますか?

A: リーフファイルシステムを書いているのか、スタックファイルシステムを書いているのかによって、答えは異なります。

  • リーフファイルシステム――アップルは、Mac OS X 向けのリーフファイルシステムの開発をサポートしています。残念ながら、Mac OS X の VFS プラグインのアーキテクチャを具体的に取り上げているドキュメントはありません。ただし次のリソースが参考になるはずです。
    • Mac OS X の VFS アーキテクチャは 4.4BSD から派生しています。『The Design and Implementation of the 4.4BSD Operation System』(ISBN: 0-201-54979-4) に、4.4BSD での VFS の概要が分かりやすく説明されています。4.4BSD と Mac OS X には重要な違いがあるため(たとえば、HFS セマンティックスをサポートするためのユニファイドバッファキャッシュと追加の VFS エントリポイント)、この本を絶対的なものと見なすべきではありません。
    • Mac OS X カーネルプログラミング全般については、アップルのデベロッパ Web サイトの ドキュメントを参照してください。
    • VFS を扱った DTS の Q&A がいくつかあります。
    • 既存のいくつかのファイルシステム向けのソースを、Darwin(Mac OS X のオープンソース基盤)で利用できます。
    • 技術的に分からないことがある場合は、コミュニティベースの無料のサポートを提供している各種のメーリングリスト(darwin-kernel メーリングリストを推奨します)と、有料サポート を提供している DTS があります。

重要:
Mac OS X カーネルの BSD 部分におけるすべての開発と同様に、VFS プラグインに対するバイナリレベルの互換性は保証されていません。バイナリレベルの互換性の問題を解決するまで、VFS レイヤについての明文化は行わない予定です。

  • スタックファイルシステム――アップルは、Mac OS X 上でのスタック VFS プラグインの開発をサポートしていません。次の条件を満たすスタック VFS プラグインを作成するのは不可能ではないかと考えているためです。
    1. 確実に動作する。
    2. システムのパフォーマンスに大きな影響を与えない。
    3. 将来のシステムとのバイナリレベル(あるいはソースレベルまで)の互換性を持つ見込みがある。

以前のアップルのドキュメントには、スタック VFS プラグインを使用して、ファイルレベルの暗号化やウイルスチェックのような特定の問題を解決できると記載されていました。そのサンプルである Mac OS X のプレリリース版のビルド環境で動作する Politically Correct ファイルシステム (PCFS) まで公開したほどです。その後の経験により、このテクニックが正しく動作しないことが分かり、現在はサポートしていません。このような理由で、アップルでは、スタック VFS に関するすべての記述をアップルのドキュメントから削除しており(一部はこれから削除します)、PCFS のアップデートも公開する予定はありません。既存の PCFS のソースコードは、ユニファイドバッファキャッシュをサポートするアップデートがなされていないため役に立ちません。

スタックファイルシステム経由でしか解決できない問題を抱えている場合は、DTS 宛てにメールでお知らせください。開発のサポートはできませんが、デベロッパの方が必要としているものや、必要になる理由についての情報収集には関心があります。フィードバックは、この問題への長期的なアプローチの指針になるでしょう。

最後に、この分野で開発を行っているサードパーティのデベロッパは、数多く存在します。サポートされていないスタック VFS プラグインをどうしても開発するという場合は、インターネットで役立つ情報を見つけることができるでしょう。


[2003 年 3 月 10 日]